package com.erp.programmer;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;
// 代码自动生成器
/*public class MyAutoGenerator {
        public static void main(String[] args) {
    // 需要构建一个 代码自动生成器 对象
    AutoGenerator autoGenerator = new AutoGenerator();
    // 配置策略
    // 1.全局配置
    com.baomidou.mybatisplus.generator.config.GlobalConfig globalConfig = new GlobalConfig();
    // 默认定位到的当前用户目录("user.dir")（即工程根目录)
    String projectPath = System.getProperty("user.dir");
    // 将目录合并，即将生成的目录位置
        globalConfig.setOutputDir(projectPath+"/src/main/java");
    // 每个文件注解作者为沐风
        globalConfig.setAuthor("陈鑫");
    // 是否打开windows 文件夹
        globalConfig.setOpen(false);
    // 是否覆盖文件
        globalConfig.setFileOverride(false);
    // 设置日期类型为只有年月日
        globalConfig.setDateType(DateType.ONLY_DATE);
    // 将全局配置添加到代码生成器对象中
        autoGenerator.setGlobalConfig(globalConfig);

    // 2.配置数据源
    DataSourceConfig dataSourceConfig = new DataSourceConfig();
    // 配置URL
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/erp_system?userUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT");
    // 配置DriverName
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
    // 配置用户名
        dataSourceConfig.setUsername("root");
    // 配置密码
        dataSourceConfig.setPassword("1234");
    // 配置数据库类型为MYSQL
        dataSourceConfig.setDbType(DbType.MYSQL);
    // 将数据源配置添加到代码生成器对象中
        autoGenerator.setDataSource(dataSourceConfig);

    // 3.包的配置
    PackageConfig packageConfig = new PackageConfig();
    // 设置父包
        packageConfig.setParent("com.erp.programmer");
    // 设置实体类包名
        packageConfig.setEntity("domain");
    // 设置Service层包名
        packageConfig.setService("service");
    // 设置controller层包名
        packageConfig.setController("controller");
    // 设置mapper包名
        packageConfig.setMapper("dao");
    // 将包配置添加到代码生成器对象中
        autoGenerator.setPackageInfo(packageConfig);


    // 4.策略配置
    StrategyConfig strategyConfig = new StrategyConfig();
    // 设置要映射的表名，参数为可变参数，可以同时传入多张表进行生成
        strategyConfig.setInclude("permission","local_company");
    // 设置数据库表名映射到实体类的命名策略，underline_to_camel为下划线转驼峰 no_change为不做改变，原样输出
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
    // 数据库表字段映射到实体属性的命名策略，underline_to_camel为下划线转驼峰 no_change为不做改变，原样输出
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
//        // 自动填充策略
//        // 添加时填充
//        TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
//        // 添加和更新时填充
//        TableFill updateTime = new TableFill("update_time",FieldFill.INSERT_UPDATE);
//        // 创建TableFilleList
//        ArrayList<TableFill> tableFills = new ArrayList<>();
//        // 将两个加入到TableFillList中
//        tableFills.add(createTime);
//        tableFills.add(updateTime);
//        // 将策略配置中加入TableFillList的配置
//        strategyConfig.setTableFillList(tableFills);
//        // 乐观锁
//        strategyConfig.setVersionFieldName("version");
    // 是否Controller注解为RestController
        strategyConfig.setRestControllerStyle(true);
    // 配置驼峰转连字符，默认为false，即驼峰配置，例如：控制层url将为userTest,若为true，则为user-test
        strategyConfig.setControllerMappingHyphenStyle(false);
    // 将策略配置添加到自动生成器对象中
        autoGenerator.setStrategy(strategyConfig);


    // 执行
        autoGenerator.execute();
    }
}*/
